<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script src="../node_modules/@vue/runtime-dom/dist/runtime-dom.global.js"></script>
    <div id="app"></div>
    <script>
        let {
            createApp,
            h,
            reactive
        } = VueRuntimeDOM;
        let App = {
            // 老的写法也可以用
            // data(){ //老的写法 date methods：  optionsApi->compostionsApi(自定义一些响应式数据)，可以进行组合
            //     return {a:1}
            // },
            setup(props, context) { //替换 beforeCreate只运行一次
                const state = reactive({
                    count: 1
                });
                console.log(props, context)
                return { // 拿值 proxy.state
                    state
                }
            },
            // render(proxy){//proxy可以代理app里面的数据 
            //     return h('div',{style:{color:'red'}},`hello world${proxy.state.count}`)
            // }
            props: {
                name: String
            },
            // setup(props, context) {
            //     // this===>指向window
            //     // context:attrs ,emit , expose ,props, slots
            //     const state = reactive({
            //         count: 1
            //     });
            //     return () => { //返回函数用来渲染，返回对象用来用 ---render函数是一个effect，数据变化得而函数会重新执行=》jsx
            //         return h('div', { //这玩意和vue2的写法还是有点区别
            //             style: {
            //                 color: 'red'
            //             }
            //         }, `hello world${state.count}`)
            //     }
            // }
        }
        // 参数 1 组件以哪个组件作为入口 ， 2 props
        createApp(App, {
            name: 'aa'
        }).mount('#app')
    </script>
</body>

</html>